When an enterprise software application or an application server product is installed at an organizations site, there is usually a need to prevent unauthorized parties from reading or modifying any information that controls the behavior of that software application. As referred to herein, examples of such enterprise software applications and application servers include the WebLogic Server product, and the Aqualogic Server product, both from BEA Systems, Inc. When installed, these products invariably include important information such as system configuration parameters, and sensitive customer data. Sometimes, this information is secured by encrypting the information using a symmetric key, which in turn is stored on the system's hard drive. However, when the symmetric key is stored in an unencrypted form on the system, an unauthorized person could gain access to it, and could use they key to read and modify application configuration parameters, or customer data.
An unauthorized party can gain accessed to a symmetric key in different ways. For example, a user that gains access to either the Administrator account on the local machine, becomes a member of a security group which allows administrative access to the system, or otherwise circumvents the system security, can directly read the symmetric key from the system hard drive. Alternatively; the symmetric key can sometimes be read if the computer is booted using a different operating system. Another approach is to read the symmetric key from unencrypted backup tapes or backup media.
A popular approach for protecting symmetric keys in enterprise software systems consists of embedding the key (or some data that is necessary for the key generation) into the software application binaries when they are first shipped from the software developer to the end user or customer. This embedded (or derivable) key is then used to start the protection chain by encrypting the secret and private keys stored on the system disk. While this approach represents an improvement over the use of basic unencrypted symmetric keys, it also has two significant shortcomings. First, since either the embedded key or the algorithm needed for its derivation is static and well-known, then extracting it and openly publishing it significantly reduces its protection qualities. Second, the technique is open to substitution and identity spoofing attacks; since any information encrypted by this key, including the application's symmetric keys on the disk; may be silently substituted without detection.
For any key protection scheme to be absolute; it should preferably require some external input for initialization—for example, in the form of a keyboard password or a private key stored on a removable hardware device. Otherwise, an attacker who has access to the same resources as the application itself will always be able to follow the algorithm's steps to arrive at the same results. This creates a problem with enterprise software applications and application servers, which are designed to be automatically restartable in the case of failure or for administrative reasons. Therefore, most traditional approaches to key protection cannot support a requirement for automatic restarts, while simultaneously providing a strong protection scheme that uses off-system storage of key data. The variety of different schemes that are available today vary only in the level of effort necessary to discern the desired key.